home *** CD-ROM | disk | FTP | other *** search
- Path: uunet!zephyr.ens.tek.com!tekgen!tekred!saab!billr
- From: billr@saab.CNA.TEK.COM (Bill Randle)
- Newsgroups: comp.sources.games
- Subject: v07i099: NetHack3 - display oriented dungeons & dragons (Ver. 3.0), Patch1f
- Message-ID: <4393@tekred.CNA.TEK.COM>
- Date: 3 Aug 89 17:00:44 GMT
- Sender: nobody@tekred.CNA.TEK.COM
- Lines: 1891
- Approved: billr@saab.CNA.TEK.COM
-
- Submitted-by: Izchak Miller <izchak@linc.cis.upenn.edu>
- Posting-number: Volume 7, Issue 99
- Archive-name: NetHack3/Patch1f
- Patch-To: NetHack3: Volume 7, Issue 56-93
-
-
-
- #! /bin/sh
- # This is a shell archive. Remove anything before this line, then unpack
- # it by saving it into a file and typing "sh file". To overwrite existing
- # files, type "sh file -c". You can also feed this as standard input via
- # unshar, or by typing "sh <file", e.g.. If this archive is complete, you
- # will see the following message at the end:
- # "End of archive 6 (of 6)."
- # Contents: src4.diff
- # Wrapped by billr@saab on Thu Aug 3 09:57:48 1989
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f 'src4.diff' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'src4.diff'\"
- else
- echo shar: Extracting \"'src4.diff'\" \(48599 characters\)
- sed "s/^X//" >'src4.diff' <<'END_OF_FILE'
- XSource patches, part 4 and final
- X
- X-----------------------------------Cut---------------------------------
- X*** src/Old/shk.c Mon Jul 31 14:40:35 1989
- X--- src/shk.c Thu Jul 27 11:37:49 1989
- X***************
- X*** 386,392 ****
- X register struct monst *shkp;
- X {
- X long robbed = ESHK(shkp)->robbed;
- X! long balance = ((tmp <= 0) ? tmp : check_credit(tmp, shkp));
- X
- X u.ugold -= balance;
- X shkp->mgold += balance;
- X--- 386,392 ----
- X register struct monst *shkp;
- X {
- X long robbed = ESHK(shkp)->robbed;
- X! long balance = ((tmp <= 0L) ? tmp : check_credit(tmp, shkp));
- X
- X u.ugold -= balance;
- X shkp->mgold += balance;
- X***************
- X*** 393,399 ****
- X flags.botl = 1;
- X if(robbed) {
- X robbed -= tmp;
- X! if(robbed < 0) robbed = 0;
- X ESHK(shkp)->robbed = robbed;
- X }
- X }
- X--- 393,399 ----
- X flags.botl = 1;
- X if(robbed) {
- X robbed -= tmp;
- X! if(robbed < 0) robbed = 0L;
- X ESHK(shkp)->robbed = robbed;
- X }
- X }
- X***************
- X*** 421,427 ****
- X
- X NOTANGRY(shkp) = 1;
- X ESHK(shkp)->following = 0;
- X! ESHK(shkp)->robbed = 0;
- X if (pl_character[0] != 'R')
- X adjalign(sgn(u.ualigntyp));
- X if(!inhishop(shkp)) {
- X--- 421,427 ----
- X
- X NOTANGRY(shkp) = 1;
- X ESHK(shkp)->following = 0;
- X! ESHK(shkp)->robbed = 0L;
- X if (pl_character[0] != 'R')
- X adjalign(sgn(u.ualigntyp));
- X if(!inhishop(shkp)) {
- X***************
- X*** 477,483 ****
- X You("give %s all your gold.", mon_nam(shkp));
- X pay(u.ugold, shkp);
- X }
- X! if(ugold < ltmp/2)
- X pline("Unfortunately, %s doesn't look satisfied.",
- X ESHK(shkp)->ismale ? "he" : "she");
- X else
- X--- 477,483 ----
- X You("give %s all your gold.", mon_nam(shkp));
- X pay(u.ugold, shkp);
- X }
- X! if(ugold < ltmp/2L)
- X pline("Unfortunately, %s doesn't look satisfied.",
- X ESHK(shkp)->ismale ? "he" : "she");
- X else
- X***************
- X*** 487,499 ****
- X }
- X
- X /* ltmp is still ESHK(shkp)->robbed here */
- X! if(!ESHK(shkp)->billct) {
- X if(!ltmp && NOTANGRY(shkp)) {
- X You("do not owe %s anything.", mon_nam(shkp));
- X if(!u.ugold) pline(no_money);
- X } else if(ltmp) {
- X pline("%s is after blood, not money!", mon_nam(shkp));
- X! if(u.ugold < ltmp/2) {
- X if(!u.ugold) pline(no_money);
- X else pline("Besides, you don't have enough to interest %s.",
- X ESHK(shkp)->ismale ? "him" : "her");
- X--- 487,499 ----
- X }
- X
- X /* ltmp is still ESHK(shkp)->robbed here */
- X! if(!ESHK(shkp)->billct && !ESHK(shkp)->debit) {
- X if(!ltmp && NOTANGRY(shkp)) {
- X You("do not owe %s anything.", mon_nam(shkp));
- X if(!u.ugold) pline(no_money);
- X } else if(ltmp) {
- X pline("%s is after blood, not money!", mon_nam(shkp));
- X! if(u.ugold < ltmp/2L) {
- X if(!u.ugold) pline(no_money);
- X else pline("Besides, you don't have enough to interest %s.",
- X ESHK(shkp)->ismale ? "him" : "her");
- X***************
- X*** 512,518 ****
- X * door broken, attacked, etc. */
- X pline("%s is after your hide, not your money!",
- X mon_nam(shkp));
- X! if(u.ugold < 1000) {
- X if(!u.ugold) pline(no_money);
- X else
- X pline("Besides, you don't have enough to interest %s.",
- X--- 512,518 ----
- X * door broken, attacked, etc. */
- X pline("%s is after your hide, not your money!",
- X mon_nam(shkp));
- X! if(u.ugold < 1000L) {
- X if(!u.ugold) pline(no_money);
- X else
- X pline("Besides, you don't have enough to interest %s.",
- X***************
- X*** 618,624 ****
- X }
- X obj->unpaid = 0;
- X ltmp = bp->price * bp->bquan;
- X! if(ANGRY(shopkeeper)) ltmp += ltmp/3;
- X if(u.ugold + ESHK(shopkeeper)->credit < ltmp){
- X You("don't have gold%s enough to pay for %s.",
- X (ESHK(shopkeeper)->credit > 0L) ? " or credit" : "",
- X--- 618,624 ----
- X }
- X obj->unpaid = 0;
- X ltmp = bp->price * bp->bquan;
- X! if(ANGRY(shopkeeper)) ltmp += ltmp/3L;
- X if(u.ugold + ESHK(shopkeeper)->credit < ltmp){
- X You("don't have gold%s enough to pay for %s.",
- X (ESHK(shopkeeper)->credit > 0L) ? " or credit" : "",
- X***************
- X*** 647,653 ****
- X boolean
- X paybill(){
- X register struct monst *mtmp;
- X! register int loss = 0;
- X register struct obj *otmp;
- X register xchar ox, oy;
- X register boolean take = FALSE;
- X--- 647,653 ----
- X boolean
- X paybill(){
- X register struct monst *mtmp;
- X! register long loss = 0L;
- X register struct obj *otmp;
- X register xchar ox, oy;
- X register boolean take = FALSE;
- X***************
- X*** 666,680 ****
- X /* shopkeeper is peaceful, nothing stolen, nothing owed. */
- X if(in_shop(u.ux,u.uy) && !IS_DOOR(levl[u.ux][u.uy].typ) &&
- X !ESHK(shopkeeper)->billct && !ESHK(shopkeeper)->robbed &&
- X! inhishop(shopkeeper) && NOTANGRY(shopkeeper) &&
- X! !ESHK(shopkeeper)->following) {
- X pline("%s gratefully inherits all your possessions.",
- X Monnam(shopkeeper));
- X goto clear;
- X }
- X
- X! if(ESHK(shopkeeper)->billct || ESHK(shopkeeper)->robbed) {
- X addupbill();
- X loss = ((total >= ESHK(shopkeeper)->robbed) ? total :
- X ESHK(shopkeeper)->robbed);
- X take = TRUE;
- X--- 666,682 ----
- X /* shopkeeper is peaceful, nothing stolen, nothing owed. */
- X if(in_shop(u.ux,u.uy) && !IS_DOOR(levl[u.ux][u.uy].typ) &&
- X !ESHK(shopkeeper)->billct && !ESHK(shopkeeper)->robbed &&
- X! !ESHK(shopkeeper)->debit && inhishop(shopkeeper) &&
- X! NOTANGRY(shopkeeper) && !ESHK(shopkeeper)->following) {
- X pline("%s gratefully inherits all your possessions.",
- X Monnam(shopkeeper));
- X goto clear;
- X }
- X
- X! if(ESHK(shopkeeper)->billct || ESHK(shopkeeper)->debit ||
- X! ESHK(shopkeeper)->robbed) {
- X addupbill();
- X+ total += ESHK(shopkeeper)->debit;
- X loss = ((total >= ESHK(shopkeeper)->robbed) ? total :
- X ESHK(shopkeeper)->robbed);
- X take = TRUE;
- X***************
- X*** 686,692 ****
- X Monnam(shopkeeper));
- X taken = TRUE;
- X shopkeeper->mgold += u.ugold;
- X! u.ugold = 0;
- X /* in case bones: make it be for real... */
- X if(!in_shop(u.ux, u.uy) || IS_DOOR(levl[u.ux][u.uy].typ)) {
- X /* shk.x,shk.y is the position immediately in
- X--- 688,694 ----
- X Monnam(shopkeeper));
- X taken = TRUE;
- X shopkeeper->mgold += u.ugold;
- X! u.ugold = 0L;
- X /* in case bones: make it be for real... */
- X if(!in_shop(u.ux, u.uy) || IS_DOOR(levl[u.ux][u.uy].typ)) {
- X /* shk.x,shk.y is the position immediately in
- X***************
- X*** 768,775 ****
- X {
- X register long tmp;
- X
- X! tmp = getprice(obj);
- X! if (!tmp) tmp = 5;
- X if (ANGRY(shopkeeper) ||
- X (pl_character[0] == 'T' && u.ulevel < (MAXULEV/2))
- X #ifdef SHIRT
- X--- 770,777 ----
- X {
- X register long tmp;
- X
- X! tmp = (long) getprice(obj);
- X! if (!tmp) tmp = 5L;
- X if (ANGRY(shopkeeper) ||
- X (pl_character[0] == 'T' && u.ulevel < (MAXULEV/2))
- X #ifdef SHIRT
- X***************
- X*** 776,788 ****
- X || (uarmu && !uarm) /* wearing just a Hawaiian shirt */
- X #endif
- X )
- X! tmp += tmp/3;
- X! if (ACURR(A_CHA) > 18) tmp /= 2;
- X! else if (ACURR(A_CHA) > 17) tmp = (tmp * 2)/3;
- X! else if (ACURR(A_CHA) > 15) tmp = (tmp * 3)/4;
- X! else if (ACURR(A_CHA) < 11) tmp = (tmp * 4)/3;
- X! else if (ACURR(A_CHA) < 8) tmp = (tmp * 3)/2;
- X! else if (ACURR(A_CHA) < 6) tmp *= 2;
- X return(tmp);
- X }
- X
- X--- 778,790 ----
- X || (uarmu && !uarm) /* wearing just a Hawaiian shirt */
- X #endif
- X )
- X! tmp += tmp/3L;
- X! if (ACURR(A_CHA) > 18) tmp /= 2L;
- X! else if (ACURR(A_CHA) > 17) tmp = (tmp * 2L)/3L;
- X! else if (ACURR(A_CHA) > 15) tmp = (tmp * 3L)/4L;
- X! else if (ACURR(A_CHA) < 11) tmp = (tmp * 4L)/3L;
- X! else if (ACURR(A_CHA) < 8) tmp = (tmp * 3L)/2L;
- X! else if (ACURR(A_CHA) < 6) tmp *= 2L;
- X return(tmp);
- X }
- X
- X***************
- X*** 891,902 ****
- X register struct obj *obj;
- X {
- X long ltmp;
- X- /* register int tmp; /* use of tmp commented out below */
- X- register struct obj *otmp;
- X register struct bill_x *bp;
- X if(!costly_spot(u.ux,u.uy))
- X return;
- X if((bp = onbill(obj)) != 0) {
- X obj->unpaid = 0;
- X if(bp->bquan > obj->quan){
- X otmp = newobj(0);
- X--- 893,905 ----
- X register struct obj *obj;
- X {
- X long ltmp;
- X register struct bill_x *bp;
- X+
- X if(!costly_spot(u.ux,u.uy))
- X return;
- X if((bp = onbill(obj)) != 0) {
- X+ register struct obj *otmp;
- X+
- X obj->unpaid = 0;
- X if(bp->bquan > obj->quan){
- X otmp = newobj(0);
- X***************
- X*** 923,932 ****
- X /* he dropped something of his own - probably wants to sell it */
- X if(shopkeeper->msleep || shopkeeper->mfroz || !inhishop(shopkeeper))
- X return;
- X! ltmp = getprice(obj) * obj->quan;
- X if(ESHK(shopkeeper)->billct == BILLSZ
- X || !saleable(rooms[ESHK(shopkeeper)->shoproom].rtype-SHOPBASE, obj)
- X! || otmp->olet == BALL_SYM || ltmp == 0L) {
- X pline("%s seems not interested.", Monnam(shopkeeper));
- X obj->no_charge = 1;
- X return;
- X--- 926,935 ----
- X /* he dropped something of his own - probably wants to sell it */
- X if(shopkeeper->msleep || shopkeeper->mfroz || !inhishop(shopkeeper))
- X return;
- X! ltmp = (long) getprice(obj) * (long) obj->quan;
- X if(ESHK(shopkeeper)->billct == BILLSZ
- X || !saleable(rooms[ESHK(shopkeeper)->shoproom].rtype-SHOPBASE, obj)
- X! || obj->olet == BALL_SYM || ltmp == 0L) {
- X pline("%s seems not interested.", Monnam(shopkeeper));
- X obj->no_charge = 1;
- X return;
- X***************
- X*** 936,947 ****
- X || (uarmu && !uarm) /* wearing just a Hawaiian shirt */
- X #endif
- X ) {
- X! ltmp /= 3;
- X NOTANGRY(shopkeeper) = 1;
- X! } else ltmp /= 2;
- X if(ESHK(shopkeeper)->robbed) {
- X! if((ESHK(shopkeeper)->robbed -= ltmp) < 0)
- X! ESHK(shopkeeper)->robbed = 0;
- X pline("\"Thank you for your contribution to restock this recently plundered shop.\"");
- X return;
- X }
- X--- 939,950 ----
- X || (uarmu && !uarm) /* wearing just a Hawaiian shirt */
- X #endif
- X ) {
- X! ltmp /= 3L;
- X NOTANGRY(shopkeeper) = 1;
- X! } else ltmp /= 2L;
- X if(ESHK(shopkeeper)->robbed) {
- X! if((ESHK(shopkeeper)->robbed -= ltmp) < 0L)
- X! ESHK(shopkeeper)->robbed = 0L;
- X pline("\"Thank you for your contribution to restock this recently plundered shop.\"");
- X return;
- X }
- X***************
- X*** 986,992 ****
- X if(page_line("Unpaid articles already used up:") || page_line(""))
- X goto quit;
- X
- X! totused = 0;
- X for(bp = bill; bp - bill < ESHK(shopkeeper)->billct; bp++) {
- X obj = bp_to_obj(bp);
- X if(!obj) {
- X--- 989,995 ----
- X if(page_line("Unpaid articles already used up:") || page_line(""))
- X goto quit;
- X
- X! totused = 0L;
- X for(bp = bill; bp - bill < ESHK(shopkeeper)->billct; bp++) {
- X obj = bp_to_obj(bp);
- X if(!obj) {
- X***************
- X*** 1047,1053 ****
- X tmp = 0;
- X break;
- X case ARMOR_SYM:
- X- if (u.uac > 0) tmp += u.uac * 2;
- X case WEAPON_SYM:
- X if (obj->spe > 0) tmp += 10 * obj->spe;
- X break;
- X--- 1050,1055 ----
- X***************
- X*** 1156,1162 ****
- X uondoor = (u.ux == ESHK(shkp)->shd.x &&
- X u.uy == ESHK(shkp)->shd.y);
- X if(uondoor) {
- X! if(ESHK(shkp)->billct && inhishop(shkp))
- X pline(NOTANGRY(shkp) ?
- X "\"Hello, %s! Will you please pay before leaving?\"" :
- X "\"Hey, %s! Don't leave without paying!\"",
- X--- 1158,1165 ----
- X uondoor = (u.ux == ESHK(shkp)->shd.x &&
- X u.uy == ESHK(shkp)->shd.y);
- X if(uondoor) {
- X! if((ESHK(shkp)->billct || ESHK(shkp)->debit)
- X! && inhishop(shkp))
- X pline(NOTANGRY(shkp) ?
- X "\"Hello, %s! Will you please pay before leaving?\"" :
- X "\"Hey, %s! Don't leave without paying!\"",
- X***************
- X*** 1170,1176 ****
- X badinv = FALSE;
- X }
- X
- X! if(((!ESHK(shkp)->robbed && !ESHK(shkp)->billct) || avoid)
- X && GDIST(omx,omy) < 3) {
- X if(!badinv && !online(omx,omy))
- X return(0);
- X--- 1173,1180 ----
- X badinv = FALSE;
- X }
- X
- X! if(((!ESHK(shkp)->robbed && !ESHK(shkp)->billct &&
- X! !ESHK(shkp)->debit) || avoid)
- X && GDIST(omx,omy) < 3) {
- X if(!badinv && !online(omx,omy))
- X return(0);
- X***************
- X*** 1263,1281 ****
- X register int kcnt = (cnt / 9); /* and maybe a kaptain */
- X
- X while(cnt--) {
- X! enexto(mm, mm->x, mm->y);
- X (void) makemon(&mons[PM_KEYSTONE_KOP], mm->x, mm->y);
- X }
- X while(scnt--) {
- X! enexto(mm, mm->x, mm->y);
- X (void) makemon(&mons[PM_KOP_SERGEANT], mm->x, mm->y);
- X }
- X while(lcnt--) {
- X! enexto(mm, mm->x, mm->y);
- X (void) makemon(&mons[PM_KOP_LIEUTENANT], mm->x, mm->y);
- X }
- X while(kcnt--) {
- X! enexto(mm, mm->x, mm->y);
- X (void) makemon(&mons[PM_KOP_KAPTAIN], mm->x, mm->y);
- X }
- X return(cnt + scnt + lcnt + kcnt);
- X--- 1267,1285 ----
- X register int kcnt = (cnt / 9); /* and maybe a kaptain */
- X
- X while(cnt--) {
- X! enexto(mm, mm->x, mm->y, &mons[PM_KEYSTONE_KOP]);
- X (void) makemon(&mons[PM_KEYSTONE_KOP], mm->x, mm->y);
- X }
- X while(scnt--) {
- X! enexto(mm, mm->x, mm->y, &mons[PM_KOP_SERGEANT]);
- X (void) makemon(&mons[PM_KOP_SERGEANT], mm->x, mm->y);
- X }
- X while(lcnt--) {
- X! enexto(mm, mm->x, mm->y, &mons[PM_KOP_LIEUTENANT]);
- X (void) makemon(&mons[PM_KOP_LIEUTENANT], mm->x, mm->y);
- X }
- X while(kcnt--) {
- X! enexto(mm, mm->x, mm->y, &mons[PM_KOP_KAPTAIN]);
- X (void) makemon(&mons[PM_KOP_KAPTAIN], mm->x, mm->y);
- X }
- X return(cnt + scnt + lcnt + kcnt);
- X***************
- X*** 1353,1359 ****
- X
- X if(um_dist(x, y, 1)) goto chase;
- X
- X! if(u.ugold < damage || !rn2(50)) {
- X chase:
- X if(um_dist(x, y, 1))
- X pline("%s shouts: \"Who dared %s my door?\"",
- X--- 1357,1363 ----
- X
- X if(um_dist(x, y, 1)) goto chase;
- X
- X! if(u.ugold < (long) damage || !rn2(50)) {
- X chase:
- X if(um_dist(x, y, 1))
- X pline("%s shouts: \"Who dared %s my door?\"",
- X***************
- X*** 1366,1373 ****
- X
- X pline("\"Cad! You did %d zorkmids worth of damage!\" Pay? ", damage);
- X if(yn() != 'n') {
- X! u.ugold -= damage;
- X! shopkeeper->mgold += damage;
- X flags.botl = 1;
- X pline("Mollified, %s accepts your restitution.",
- X shkname(shopkeeper));
- X--- 1370,1377 ----
- X
- X pline("\"Cad! You did %d zorkmids worth of damage!\" Pay? ", damage);
- X if(yn() != 'n') {
- X! u.ugold -= (long) damage;
- X! shopkeeper->mgold += (long) damage;
- X flags.botl = 1;
- X pline("Mollified, %s accepts your restitution.",
- X shkname(shopkeeper));
- X***************
- X*** 1433,1439 ****
- X register long tmp = get_cost(otmp);
- X
- X /* The idea is to make the exhaustive use of */
- X! /* an unpaid item more expansive than buying */
- X /* outright. */
- X if(otmp->otyp == MAGIC_LAMP) { /* 1 */
- X tmp += (tmp/3L);
- X--- 1437,1443 ----
- X register long tmp = get_cost(otmp);
- X
- X /* The idea is to make the exhaustive use of */
- X! /* an unpaid item more expensive than buying */
- X /* outright. */
- X if(otmp->otyp == MAGIC_LAMP) { /* 1 */
- X tmp += (tmp/3L);
- X*** src/Old/shknam.c Mon Jul 31 14:41:46 1989
- X--- src/shknam.c Sun Jul 30 18:57:44 1989
- X***************
- X*** 268,285 ****
- X ESHK(shk)->shd = doors[sh];
- X ESHK(shk)->shk.x = sx;
- X ESHK(shk)->shk.y = sy;
- X! /* makemon() has already zeroed out all the extra space
- X! ESHK(shk)->robbed = 0;
- X! ESHK(shk)->credit = 0;
- X! ESHK(shk)->debit = 0;
- X ESHK(shk)->visitct = 0;
- X ESHK(shk)->following = 0;
- X ESHK(shk)->billct = 0;
- X! */
- X! shk->mgold = 1000 + 30*rnd(100); /* initial capital */
- X if (shp->shknms == shktools) {
- X static int who;
- X! who = rn2(sizeof(shktools)/sizeof(char *));
- X if (who==21) ESHK(shk)->ismale = FALSE;
- X else ESHK(shk)->ismale = TRUE;
- X (void) strncpy(ESHK(shk)->shknam, shp->shknms[who], PL_NSIZ);
- X--- 268,283 ----
- X ESHK(shk)->shd = doors[sh];
- X ESHK(shk)->shk.x = sx;
- X ESHK(shk)->shk.y = sy;
- X! ESHK(shk)->robbed = 0L;
- X! ESHK(shk)->credit = 0L;
- X! ESHK(shk)->debit = 0L;
- X ESHK(shk)->visitct = 0;
- X ESHK(shk)->following = 0;
- X ESHK(shk)->billct = 0;
- X! shk->mgold = 1000L + 30L*(long)rnd(100); /* initial capital */
- X if (shp->shknms == shktools) {
- X static int who;
- X! who = rn2(sizeof(shktools)/sizeof(char *) - 1);
- X if (who==21) ESHK(shk)->ismale = FALSE;
- X else ESHK(shk)->ismale = TRUE;
- X (void) strncpy(ESHK(shk)->shknam, shp->shknms[who], PL_NSIZ);
- X*** src/Old/sounds.c Mon Jul 31 14:42:44 1989
- X--- src/sounds.c Sat Jul 29 12:04:51 1989
- X***************
- X*** 585,591 ****
- X }
- X
- X tx = u.ux+u.dx; ty = u.uy+u.dy;
- X! if (!cansee(tx,ty) || !levl[tx][ty].mmask || (mtmp = m_at(tx, ty))->mimic) {
- X pline("I see nobody there.");
- X return(0);
- X }
- X--- 585,592 ----
- X }
- X
- X tx = u.ux+u.dx; ty = u.uy+u.dy;
- X! if ((Blind && !Telepat) || !levl[tx][ty].mmask ||
- X! (mtmp = m_at(tx, ty))->mimic || mtmp->mundetected) {
- X pline("I see nobody there.");
- X return(0);
- X }
- X*** src/Old/spell.c Mon Jul 31 14:43:48 1989
- X--- src/spell.c Mon Jul 24 14:47:30 1989
- X***************
- X*** 297,303 ****
- X energy *= rnd(6);
- X }
- X if(energy > u.uen) {
- X! You("are too weak to cast that spell.");
- X return(0);
- X } else if ((u.uhunger <= 100 && spell != SPE_DETECT_FOOD) ||
- X (ACURR(A_STR) < 6)) {
- X--- 297,303 ----
- X energy *= rnd(6);
- X }
- X if(energy > u.uen) {
- X! You("don't have enough energy to cast that spell.");
- X return(0);
- X } else if ((u.uhunger <= 100 && spell != SPE_DETECT_FOOD) ||
- X (ACURR(A_STR) < 6)) {
- X*** src/Old/termcap.c Mon Jul 31 14:44:47 1989
- X--- src/termcap.c Mon Jul 31 09:13:43 1989
- X***************
- X*** 17,22 ****
- X--- 17,28 ----
- X short ospeed = 0; /* gets around "not defined" error message */
- X #endif
- X
- X+ #ifdef MICROPORT_286_BUG
- X+ #define Tgetstr(key) (tgetstr(key,tbuf))
- X+ #else
- X+ #define Tgetstr(key) (tgetstr(key,&tbufptr))
- X+ #endif /* MICROPORT_286_BUG **/
- X+
- X static void nocmov();
- X #ifdef MSDOSCOLOR
- X static void init_hilite();
- X***************
- X*** 44,50 ****
- X void
- X startup()
- X {
- X! #ifdef TOS
- X HO = "\033H";
- X CL = "\033E"; /* the VT52 termcap */
- X CE = "\033K";
- X--- 50,56 ----
- X void
- X startup()
- X {
- X! #if defined(TOS) && !defined(TERMLIB)
- X HO = "\033H";
- X CL = "\033E"; /* the VT52 termcap */
- X CE = "\033K";
- X***************
- X*** 63,71 ****
- X char *tbufptr, *pc;
- X register int i;
- X
- X- tptr = (char *) alloc(1024);
- X-
- X- tbufptr = tbuf;
- X if(!(term = getenv("TERM")))
- X # ifdef ANSI_DEFAULT
- X {
- X--- 69,74 ----
- X***************
- X*** 80,86 ****
- X BC = "\033[D";
- X HI = SO = "\033[1m";
- X US = "\033[4m";
- X! TI = HE = SE = UE = "\033[0m";
- X /* strictly, SE should be 2, and UE should be 24,
- X but we can't trust all ANSI emulators to be
- X that complete. -3. */
- X--- 83,90 ----
- X BC = "\033[D";
- X HI = SO = "\033[1m";
- X US = "\033[4m";
- X! MR = "\033[7m";
- X! TI = HE = SE = UE = ME = "\033[0m";
- X /* strictly, SE should be 2, and UE should be 24,
- X but we can't trust all ANSI emulators to be
- X that complete. -3. */
- X***************
- X*** 87,106 ****
- X AS = "\016";
- X AE = "\017";
- X VS = VE = "";
- X! } else {
- X # else
- X error("Can't get TERM.");
- X # endif
- X if(!strncmp(term, "5620", 4))
- X flags.nonull = 1; /* this should be a termcap flag */
- X if(tgetent(tptr, term) < 1)
- X error("Unknown terminal type: %s.", term);
- X! if(pc = tgetstr("pc", &tbufptr))
- X PC = *pc;
- X #ifdef TERMINFO
- X! if(!(BC = tgetstr("le", &tbufptr))) {
- X #else
- X! if(!(BC = tgetstr("bc", &tbufptr))) {
- X #endif
- X #if !defined(MINIMAL_TERM) && !defined(HISX)
- X if(!tgetflag("bs"))
- X--- 91,126 ----
- X AS = "\016";
- X AE = "\017";
- X VS = VE = "";
- X! # ifdef MSDOSCOLOR
- X! HI_WHITE = HI;
- X! HI_RED = "\033[1;31m";
- X! HI_YELLOW = "\033[1;33m";
- X! HI_GREEN = "\033[1;32m";
- X! HI_BLUE = "\033[1;34m";
- X! # endif
- X! return;
- X! }
- X # else
- X+ # if defined(TOS) && defined(__GNUC__) /* library has a default */
- X+ term = "st52";
- X+ # else
- X error("Can't get TERM.");
- X+ # endif
- X # endif
- X+
- X+ tptr = (char *) alloc(1024);
- X+
- X+ tbufptr = tbuf;
- X if(!strncmp(term, "5620", 4))
- X flags.nonull = 1; /* this should be a termcap flag */
- X if(tgetent(tptr, term) < 1)
- X error("Unknown terminal type: %s.", term);
- X! if(pc = Tgetstr("pc"))
- X PC = *pc;
- X #ifdef TERMINFO
- X! if(!(BC = Tgetstr("le"))) {
- X #else
- X! if(!(BC = Tgetstr("bc"))) {
- X #endif
- X #if !defined(MINIMAL_TERM) && !defined(HISX)
- X if(!tgetflag("bs"))
- X***************
- X*** 113,159 ****
- X #ifdef MINIMAL_TERM
- X HO = NULL;
- X #else
- X! HO = tgetstr("ho", &tbufptr);
- X #endif
- X CO = tgetnum("co");
- X LI = tgetnum("li");
- X! if(CO < COLNO || LI < ROWNO+2)
- X setclipped();
- X! if(!(CL = tgetstr("cl", &tbufptr)))
- X error("Hack needs CL.");
- X! ND = tgetstr("nd", &tbufptr);
- X if(tgetflag("os"))
- X error("Hack can't have OS.");
- X! CE = tgetstr("ce", &tbufptr);
- X! UP = tgetstr("up", &tbufptr);
- X /* It seems that xd is no longer supported, and we should use
- X a linefeed instead; unfortunately this requires resetting
- X CRMOD, and many output routines will have to be modified
- X slightly. Let's leave that till the next release. */
- X! XD = tgetstr("xd", &tbufptr);
- X! /* not: XD = tgetstr("do", &tbufptr); */
- X! if(!(CM = tgetstr("cm", &tbufptr))) {
- X if(!UP && !HO)
- X error("Hack needs CM or UP or HO.");
- X Printf("Playing hack on terminals without cm is suspect...\n");
- X getret();
- X }
- X! SO = tgetstr("so", &tbufptr);
- X! SE = tgetstr("se", &tbufptr);
- X! US = tgetstr("us", &tbufptr);
- X! UE = tgetstr("ue", &tbufptr);
- X SG = tgetnum("sg"); /* -1: not fnd; else # of spaces left by so */
- X if(!SO || !SE || (SG > 0)) SO = SE = US = UE = "";
- X! TI = tgetstr("ti", &tbufptr);
- X! TE = tgetstr("te", &tbufptr);
- X VS = VE = "";
- X #if 0
- X! MB = tgetstr("mb", &tbufptr); /* blink */
- X! MD = tgetstr("md", &tbufptr); /* boldface */
- X! MH = tgetstr("mh", &tbufptr); /* dim */
- X #endif
- X! MR = tgetstr("mr", &tbufptr); /* reverse */
- X! ME = tgetstr("me", &tbufptr);
- X
- X /* Get rid of padding numbers for HI and HE. Hope they
- X * aren't really needed!!! HI and HE are ouputted to the
- X--- 133,179 ----
- X #ifdef MINIMAL_TERM
- X HO = NULL;
- X #else
- X! HO = Tgetstr("ho");
- X #endif
- X CO = tgetnum("co");
- X LI = tgetnum("li");
- X! if(CO < COLNO || LI < ROWNO+3)
- X setclipped();
- X! if(!(CL = Tgetstr("cl")))
- X error("Hack needs CL.");
- X! ND = Tgetstr("nd");
- X if(tgetflag("os"))
- X error("Hack can't have OS.");
- X! CE = Tgetstr("ce");
- X! UP = Tgetstr("up");
- X /* It seems that xd is no longer supported, and we should use
- X a linefeed instead; unfortunately this requires resetting
- X CRMOD, and many output routines will have to be modified
- X slightly. Let's leave that till the next release. */
- X! XD = Tgetstr("xd");
- X! /* not: XD = Tgetstr("do"); */
- X! if(!(CM = Tgetstr("cm"))) {
- X if(!UP && !HO)
- X error("Hack needs CM or UP or HO.");
- X Printf("Playing hack on terminals without cm is suspect...\n");
- X getret();
- X }
- X! SO = Tgetstr("so");
- X! SE = Tgetstr("se");
- X! US = Tgetstr("us");
- X! UE = Tgetstr("ue");
- X SG = tgetnum("sg"); /* -1: not fnd; else # of spaces left by so */
- X if(!SO || !SE || (SG > 0)) SO = SE = US = UE = "";
- X! TI = Tgetstr("ti");
- X! TE = Tgetstr("te");
- X VS = VE = "";
- X #if 0
- X! MB = Tgetstr("mb"); /* blink */
- X! MD = Tgetstr("md"); /* boldface */
- X! MH = Tgetstr("mh"); /* dim */
- X #endif
- X! MR = Tgetstr("mr"); /* reverse */
- X! ME = Tgetstr("me");
- X
- X /* Get rid of padding numbers for HI and HE. Hope they
- X * aren't really needed!!! HI and HE are ouputted to the
- X***************
- X*** 168,185 ****
- X i = 0;
- X while(isdigit(SE[i])) i++;
- X Strcpy(HE, &SE[i]);
- X! AS = tgetstr("as", &tbufptr);
- X! AE = tgetstr("ae", &tbufptr);
- X! CD = tgetstr("cd", &tbufptr);
- X! # ifdef ANSI_DEFAULT
- X! }
- X! # endif
- X set_whole_screen(); /* uses LI and CD */
- X if(tbufptr-tbuf > sizeof(tbuf)) error("TERMCAP entry too big...\n");
- X free((genericptr_t)tptr);
- X! #ifdef MSDOSCOLOR
- X init_hilite();
- X! #endif
- X #endif /* TOS /* */
- X }
- X
- X--- 188,202 ----
- X i = 0;
- X while(isdigit(SE[i])) i++;
- X Strcpy(HE, &SE[i]);
- X! AS = Tgetstr("as");
- X! AE = Tgetstr("ae");
- X! CD = Tgetstr("cd");
- X set_whole_screen(); /* uses LI and CD */
- X if(tbufptr-tbuf > sizeof(tbuf)) error("TERMCAP entry too big...\n");
- X free((genericptr_t)tptr);
- X! # ifdef MSDOSCOLOR
- X init_hilite();
- X! # endif
- X #endif /* TOS /* */
- X }
- X
- X*** src/Old/topten.c Mon Jul 31 14:46:14 1989
- X--- src/topten.c Sat Jul 29 21:26:29 1989
- X***************
- X*** 6,12 ****
- X #define MONATTK_H
- X #include "hack.h"
- X
- X! #include <errno.h> /* George Barbanis */
- X
- X static char *itoa P((int)), *ordin P((int));
- X static void outheader();
- X--- 6,15 ----
- X #define MONATTK_H
- X #include "hack.h"
- X
- X! #include <errno.h> /* George Barbanis */
- X! #ifdef NO_FILE_LINKS
- X! #include <fcntl.h> /* Ralf Brown */
- X! #endif
- X
- X static char *itoa P((int)), *ordin P((int));
- X static void outheader();
- X***************
- X*** 42,48 ****
- X char *recfile = RECORD;
- X #ifdef UNIX
- X char *reclock = "record_lock";
- X! #endif
- X int sleepct = 300;
- X FILE *rfile;
- X register int flg = 0;
- X--- 45,54 ----
- X char *recfile = RECORD;
- X #ifdef UNIX
- X char *reclock = "record_lock";
- X! # ifdef NO_FILE_LINKS
- X! int lockfd ;
- X! # endif
- X! #endif /* UNIX */
- X int sleepct = 300;
- X FILE *rfile;
- X register int flg = 0;
- X***************
- X*** 49,58 ****
- X #ifdef LOGFILE
- X char *lgfile = LOGFILE;
- X FILE *lfile;
- X! #ifdef UNIX
- X char *loglock = "logfile_lock";
- X int sleeplgct = 30;
- X! #endif /* UNIX */
- X #endif /* LOGFILE */
- X
- X #ifdef MSDOS
- X--- 55,64 ----
- X #ifdef LOGFILE
- X char *lgfile = LOGFILE;
- X FILE *lfile;
- X! # ifdef UNIX
- X char *loglock = "logfile_lock";
- X int sleeplgct = 30;
- X! # endif /* UNIX */
- X #endif /* LOGFILE */
- X
- X #ifdef MSDOS
- X***************
- X*** 62,68 ****
- X--- 68,83 ----
- X #endif
- X
- X #ifdef UNIX
- X+ # ifdef NO_FILE_LINKS
- X+ reclock = (char *)alloc(sizeof(LOCKDIR)+1+strlen(recfile)+7);
- X+ Strcpy(reclock,LOCKDIR) ;
- X+ Strcat(reclock,"/") ;
- X+ Strcat(reclock,recfile) ;
- X+ Strcat(reclock,"_lock") ;
- X+ while ((lockfd = open(reclock,O_RDWR|O_CREAT|O_EXCL,0666)) == -1) {
- X+ # else
- X while(link(recfile, reclock) == -1) {
- X+ # endif /* NO_FILE_LINKS */
- X HUP perror(reclock);
- X if(!sleepct--) {
- X HUP (void) puts("I give up. Sorry.");
- X***************
- X*** 72,87 ****
- X HUP Printf("Waiting for access to record file. (%d)\n",
- X sleepct);
- X HUP (void) fflush(stdout);
- X! #if defined(SYSV) || defined(ULTRIX)
- X (void)
- X! #endif
- X sleep(1);
- X }
- X! #endif
- X if(!(rfile = fopen(recfile,"r"))){
- X HUP (void) puts("Cannot open record file!");
- X goto unlock;
- X }
- X HUP (void) putchar('\n');
- X
- X /* create a new 'topten' entry */
- X--- 87,105 ----
- X HUP Printf("Waiting for access to record file. (%d)\n",
- X sleepct);
- X HUP (void) fflush(stdout);
- X! # if defined(SYSV) || defined(ULTRIX)
- X (void)
- X! # endif
- X sleep(1);
- X }
- X! #endif /* UNIX */
- X if(!(rfile = fopen(recfile,"r"))){
- X HUP (void) puts("Cannot open record file!");
- X goto unlock;
- X }
- X+ #ifdef NO_FILE_LINKS
- X+ (void) close(lockfd) ;
- X+ #endif
- X HUP (void) putchar('\n');
- X
- X /* create a new 'topten' entry */
- X***************
- X*** 103,110 ****
- X /* assure minimum number of points */
- X if(t0->points < POINTSMIN) t0->points = 0;
- X #ifdef LOGFILE /* used for debugging (who dies of what, where) */
- X! #ifdef UNIX
- X while(link(lgfile, loglock) == -1) {
- X extern int errno;
- X
- X if (errno == ENOENT) /* If no such file, do not keep log */
- X--- 121,137 ----
- X /* assure minimum number of points */
- X if(t0->points < POINTSMIN) t0->points = 0;
- X #ifdef LOGFILE /* used for debugging (who dies of what, where) */
- X! # ifdef UNIX
- X! # ifdef NO_FILE_LINKS
- X! loglock = (char *)alloc(sizeof(LOCKDIR)+1+strlen(lgfile)+6);
- X! Strcpy(loglock,LOCKDIR) ;
- X! Strcat(loglock,"/") ;
- X! Strcat(loglock,lgfile) ;
- X! Strcat(loglock,"_lock") ;
- X! while ((lockfd = open(loglock,O_RDWR|O_CREAT|O_EXCL,0666)) == -1) {
- X! # else
- X while(link(lgfile, loglock) == -1) {
- X+ # endif /* NO_FILE_LINKS */
- X extern int errno;
- X
- X if (errno == ENOENT) /* If no such file, do not keep log */
- X***************
- X*** 118,129 ****
- X HUP Printf("Waiting for access to log file. (%d)\n",
- X sleeplgct);
- X HUP (void) fflush(stdout);
- X! #if defined(SYSV) || defined(ULTRIX)
- X (void)
- X! #endif
- X sleep(1);
- X }
- X! #endif /* UNIX */
- X if(!(lfile = fopen(lgfile,"a"))){
- X HUP (void) puts("Cannot open log file!");
- X goto lgend;
- X--- 145,156 ----
- X HUP Printf("Waiting for access to log file. (%d)\n",
- X sleeplgct);
- X HUP (void) fflush(stdout);
- X! # if defined(SYSV) || defined(ULTRIX)
- X (void)
- X! # endif
- X sleep(1);
- X }
- X! # endif /* UNIX */
- X if(!(lfile = fopen(lgfile,"a"))){
- X HUP (void) puts("Cannot open log file!");
- X goto lgend;
- X***************
- X*** 134,143 ****
- X t0->hp, t0->maxhp, t0->points,
- X t0->plchar, t0->sex, t0->name, t0->death);
- X (void) fclose(lfile);
- X! #ifdef UNIX
- X (void) unlink(loglock);
- X! #endif /* UNIX */
- X lgend:;
- X #endif /* LOGFILE */
- X
- X t1 = tt_head = newttentry();
- X--- 161,173 ----
- X t0->hp, t0->maxhp, t0->points,
- X t0->plchar, t0->sex, t0->name, t0->death);
- X (void) fclose(lfile);
- X! # ifdef UNIX
- X (void) unlink(loglock);
- X! # endif /* UNIX */
- X lgend:;
- X+ # ifdef NO_FILE_LINKS
- X+ (void) close(lockfd) ;
- X+ # endif
- X #endif /* LOGFILE */
- X
- X t1 = tt_head = newttentry();
- X***************
- X*** 144,150 ****
- X tprev = 0;
- X /* rank0: -1 undefined, 0 not_on_list, n n_th on list */
- X for(rank = 1; ; ) {
- X! #ifdef TOS
- X char k1[2],k2[2];
- X if(fscanf(rfile, "%6s %d %d %d %d %d %ld %1s%1s %s %s]",
- X #else
- X--- 174,180 ----
- X tprev = 0;
- X /* rank0: -1 undefined, 0 not_on_list, n n_th on list */
- X for(rank = 1; ; ) {
- X! #ifdef OLD_TOS
- X char k1[2],k2[2];
- X if(fscanf(rfile, "%6s %d %d %d %d %d %ld %1s%1s %s %s]",
- X #else
- X***************
- X*** 153,159 ****
- X t1->date, &t1->uid,
- X &t1->level, &t1->maxlvl,
- X &t1->hp, &t1->maxhp, &t1->points,
- X! #ifdef TOS
- X k1, k2,
- X #else
- X &t1->plchar, &t1->sex,
- X--- 183,189 ----
- X t1->date, &t1->uid,
- X &t1->level, &t1->maxlvl,
- X &t1->hp, &t1->maxhp, &t1->points,
- X! #ifdef OLD_TOS
- X k1, k2,
- X #else
- X &t1->plchar, &t1->sex,
- X***************
- X*** 161,167 ****
- X t1->name, t1->death) != 11 || t1->points < POINTSMIN)
- X t1->points = 0;
- X
- X! #ifdef TOS
- X t1->plchar=k1[0];
- X t1->sex=k2[0];
- X #endif
- X--- 191,197 ----
- X t1->name, t1->death) != 11 || t1->points < POINTSMIN)
- X t1->points = 0;
- X
- X! #ifdef OLD_TOS
- X t1->plchar=k1[0];
- X t1->sex=k2[0];
- X #endif
- X***************
- X*** 259,265 ****
- X (void) fclose(rfile);
- X unlock: ;
- X #ifdef UNIX
- X! (void) unlink(reclock);
- X #endif
- X }
- X
- X--- 289,299 ----
- X (void) fclose(rfile);
- X unlock: ;
- X #ifdef UNIX
- X! # ifdef NO_FILE_LINKS
- X! (void) close(lockfd) ;
- X! # endif
- X! if (unlink(reclock) < 0)
- X! Printf("Can't unlink %s\n",reclock) ;
- X #endif
- X }
- X
- X***************
- X*** 330,335 ****
- X--- 364,370 ----
- X if(iskilled) Sprintf(eos(linebuf), " by %s%s",
- X (!strncmp(t1->death, "trick", 5) || !strncmp(t1->death, "the ", 4)
- X || !strncmp(t1->death, "Mr. ", 4) || !strncmp(t1->death, "Ms. ", 4)
- X+ || !strncmp(eos(t1->death)-4, "tion", 4)
- X ) ? "" :
- X index(vowels,*t1->death) ? "an " : "a ",
- X t1->death);
- X***************
- X*** 463,469 ****
- X
- X t1 = tt_head = newttentry();
- X for(rank = 1; ; rank++) {
- X! #ifdef TOS
- X char k1[2], k2[2];
- X if(fscanf(rfile, "%6s %d %d %d %d %d %ld %1s%1s %s %s]",
- X #else
- X--- 498,504 ----
- X
- X t1 = tt_head = newttentry();
- X for(rank = 1; ; rank++) {
- X! #ifdef OLD_TOS
- X char k1[2], k2[2];
- X if(fscanf(rfile, "%6s %d %d %d %d %d %ld %1s%1s %s %s]",
- X #else
- X***************
- X*** 472,478 ****
- X t1->date, &t1->uid,
- X &t1->level, &t1->maxlvl,
- X &t1->hp, &t1->maxhp, &t1->points,
- X! #ifdef TOS
- X k1, k2,
- X #else
- X &t1->plchar, &t1->sex,
- X--- 507,513 ----
- X t1->date, &t1->uid,
- X &t1->level, &t1->maxlvl,
- X &t1->hp, &t1->maxhp, &t1->points,
- X! #ifdef OLD_TOS
- X k1, k2,
- X #else
- X &t1->plchar, &t1->sex,
- X***************
- X*** 480,486 ****
- X t1->name, t1->death) != 11)
- X t1->points = 0;
- X if(t1->points == 0) break;
- X! #ifdef TOS
- X t1->plchar=k1[0];
- X t1->sex=k2[0];
- X #endif
- X--- 515,521 ----
- X t1->name, t1->death) != 11)
- X t1->points = 0;
- X if(t1->points == 0) break;
- X! #ifdef OLD_TOS
- X t1->plchar=k1[0];
- X t1->sex=k2[0];
- X #endif
- X***************
- X*** 609,615 ****
- X rank = rnd(10);
- X pickentry:
- X for(i = rank; i; i--) {
- X! #ifdef TOS
- X char k1[2], k2[2];
- X if(fscanf(rfile, "%6s %d %d %d %d %d %ld %1s%1s %s %s]",
- X #else
- X--- 644,650 ----
- X rank = rnd(10);
- X pickentry:
- X for(i = rank; i; i--) {
- X! #ifdef OLD_TOS
- X char k1[2], k2[2];
- X if(fscanf(rfile, "%6s %d %d %d %d %d %ld %1s%1s %s %s]",
- X #else
- X***************
- X*** 618,624 ****
- X tt->date, &tt->uid,
- X &tt->level, &tt->maxlvl,
- X &tt->hp, &tt->maxhp, &tt->points,
- X! #ifdef TOS
- X k1, k2,
- X #else
- X &tt->plchar, &tt->sex,
- X--- 653,659 ----
- X tt->date, &tt->uid,
- X &tt->level, &tt->maxlvl,
- X &tt->hp, &tt->maxhp, &tt->points,
- X! #ifdef OLD_TOS
- X k1, k2,
- X #else
- X &tt->plchar, &tt->sex,
- X***************
- X*** 626,632 ****
- X tt->name, tt->death) != 11)
- X tt->points = 0;
- X if(tt->points == 0) break;
- X! #ifdef TOS
- X tt->plchar=k1[0];
- X tt->sex=k2[0];
- X #endif
- X--- 661,667 ----
- X tt->name, tt->death) != 11)
- X tt->points = 0;
- X if(tt->points == 0) break;
- X! #ifdef OLD_TOS
- X tt->plchar=k1[0];
- X tt->sex=k2[0];
- X #endif
- X*** src/Old/trap.c Wed Jul 19 04:10:30 1989
- X--- src/trap.c Mon Jul 31 21:56:52 1989
- X***************
- X*** 295,301
- X } else {
- X (void) mksobj_at(DART, u.ux, u.uy);
- X fobj->quan = 1;
- X! fobj->opoisoned = 1;
- X fobj->owt = weight(fobj);
- X }
- X break;
- X
- X--- 295,301 -----
- X } else {
- X (void) mksobj_at(DART, u.ux, u.uy);
- X fobj->quan = 1;
- X! if(!rn2(6)) fobj->opoisoned = 1;
- X fobj->owt = weight(fobj);
- X }
- X break;
- X***************
- X*** 689,694
- X case DART_TRAP:
- X otmp = mksobj(DART, FALSE);
- X otmp->quan = 1;
- X otmp->owt = weight(otmp);
- X if(thitm(7, mtmp, otmp, 0)) trapkilled = TRUE;
- X break;
- X
- X--- 689,695 -----
- X case DART_TRAP:
- X otmp = mksobj(DART, FALSE);
- X otmp->quan = 1;
- X+ if (!rn2(6)) otmp->opoisoned = 1;
- X otmp->owt = weight(otmp);
- X if(thitm(7, mtmp, otmp, 0)) trapkilled = TRUE;
- X break;
- X***************
- X*** 943,949
- X u.uundetected = 0;
- X if (u.usym == S_MIMIC_DEF) u.usym = S_MIMIC;
- X #endif
- X- setsee();
- X if(Punished) placebc(1);
- X if(u.uswallow){
- X u.uswldtim = u.uswallow = 0;
- X
- X--- 944,949 -----
- X u.uundetected = 0;
- X if (u.usym == S_MIMIC_DEF) u.usym = S_MIMIC;
- X #endif
- X if(Punished) placebc(1);
- X if(u.uswallow){
- X u.uswldtim = u.uswallow = 0;
- X***************
- X*** 949,954
- X u.uswldtim = u.uswallow = 0;
- X docrt();
- X }
- X nomul(0);
- X spoteffects();
- X }
- X
- X--- 949,955 -----
- X u.uswldtim = u.uswallow = 0;
- X docrt();
- X }
- X+ setsee();
- X nomul(0);
- X spoteffects();
- X }
- X***************
- X*** 1621,1626
- X if (dam < 1) dam = 1;
- X }
- X if ((mon->mhp -= dam) <= 0) {
- X if (cansee(mon->mx, mon->my))
- X pline("%s is killed!", Monnam(mon));
- X else if (mon->mtame)
- X
- X--- 1622,1630 -----
- X if (dam < 1) dam = 1;
- X }
- X if ((mon->mhp -= dam) <= 0) {
- X+ int xx = mon->mx;
- X+ int yy = mon->my;
- X+
- X if (cansee(mon->mx, mon->my))
- X pline("%s is killed!", Monnam(mon));
- X else if (mon->mtame)
- X***************
- X*** 1626,1631
- X else if (mon->mtame)
- X You("have a sad feeling for a moment, then it passes.");
- X mondied(mon);
- X trapkilled = TRUE;
- X }
- X }
- X
- X--- 1630,1636 -----
- X else if (mon->mtame)
- X You("have a sad feeling for a moment, then it passes.");
- X mondied(mon);
- X+ newsym(xx, yy);
- X trapkilled = TRUE;
- X }
- X }
- X*** src/Old/uhitm.c Mon Jul 31 14:50:00 1989
- X--- src/uhitm.c Mon Jul 31 09:20:24 1989
- X***************
- X*** 11,17 ****
- X #ifdef POLYSELF
- X static boolean hmonas();
- X #endif
- X- static int passive();
- X
- X #ifdef WORM
- X extern boolean notonhead;
- X--- 11,16 ----
- X***************
- X*** 26,32 ****
- X
- X mm.x = mon->mx;
- X mm.y = mon->my;
- X! enexto(&mm, mm.x, mm.y);
- X if (levl[mm.x][mm.y].mmask || mon->mhp <= 1) return (struct monst *)0;
- X m2 = newmonst(0);
- X *m2 = *mon; /* copy condition of old monster */
- X--- 25,31 ----
- X
- X mm.x = mon->mx;
- X mm.y = mon->my;
- X! enexto(&mm, mm.x, mm.y, mon->data);
- X if (levl[mm.x][mm.y].mmask || mon->mhp <= 1) return (struct monst *)0;
- X m2 = newmonst(0);
- X *m2 = *mon; /* copy condition of old monster */
- X***************
- X*** 301,309 ****
- X register int thrown;
- X {
- X register int tmp;
- X! boolean hittxt = FALSE;
- X boolean get_dmg_bonus = TRUE;
- X! boolean ispoisoned = FALSE;
- X
- X wakeup(mon);
- X if(!obj) {
- X--- 300,308 ----
- X register int thrown;
- X {
- X register int tmp;
- X! boolean hittxt = FALSE, destroyed = FALSE;
- X boolean get_dmg_bonus = TRUE;
- X! boolean ispoisoned = FALSE, needpoismsg = FALSE;
- X
- X wakeup(mon);
- X if(!obj) {
- X***************
- X*** 318,343 ****
- X mon_nam(mon), makeplural(body_part(HAND)));
- X You("turn to stone...");
- X done_in_by(mon);
- X }
- X } else {
- X if(obj->olet == WEAPON_SYM || obj->otyp == PICK_AXE ||
- X obj->olet == ROCK_SYM) {
- X
- X- if(mon->data == &mons[PM_RUST_MONSTER] && obj == uwep &&
- X- objects[obj->otyp].oc_material == METAL &&
- X- obj->spe > -2) {
- X- if(obj->rustfree) {
- X- pline("The rust on your %s vanishes instantly!",
- X- is_sword(obj) ? "sword" : "weapon");
- X- } else if(obj->blessed && rnl(4))
- X- pline("Somehow your %s is not affected!",
- X- is_sword(obj) ? "sword" : "weapon");
- X- else {
- X- Your("%s!", aobjnam(uwep, "corrode"));
- X- uwep->spe--;
- X- }
- X- }
- X-
- X if(obj == uwep && (obj->otyp > VOULGE || obj->otyp < BOOMERANG)
- X && obj->otyp != PICK_AXE)
- X tmp = rnd(2);
- X--- 317,328 ----
- X mon_nam(mon), makeplural(body_part(HAND)));
- X You("turn to stone...");
- X done_in_by(mon);
- X+ hittxt = TRUE; /* maybe lifesaved */
- X }
- X } else {
- X if(obj->olet == WEAPON_SYM || obj->otyp == PICK_AXE ||
- X obj->olet == ROCK_SYM) {
- X
- X if(obj == uwep && (obj->otyp > VOULGE || obj->otyp < BOOMERANG)
- X && obj->otyp != PICK_AXE)
- X tmp = rnd(2);
- X***************
- X*** 513,524 ****
- X }
- X */
- X if (ispoisoned) {
- X- /* OK to reference obj because ispoisoned can only be set
- X- * when obj is a throwing weapon */
- X- hit(xname(obj), mon, exclam(tmp));
- X- hittxt = TRUE;
- X if(resists_poison(mon->data))
- X! kludge("The poison doesn't seem to affect %s.", mon_nam(mon));
- X else if (rn2(10))
- X tmp += rnd(6);
- X else {
- X--- 498,505 ----
- X }
- X */
- X if (ispoisoned) {
- X if(resists_poison(mon->data))
- X! needpoismsg = TRUE;
- X else if (rn2(10))
- X tmp += rnd(6);
- X else {
- X***************
- X*** 530,539 ****
- X if(tmp < 1) tmp = 1;
- X
- X mon->mhp -= tmp;
- X! if(mon->mhp < 1) {
- X! killed(mon);
- X! return(FALSE);
- X! }
- X if(mon->mtame && (!mon->mflee || mon->mfleetim)) {
- X #ifdef SOUNDS
- X if (rn2(8)) yelp(mon);
- X--- 511,518 ----
- X if(tmp < 1) tmp = 1;
- X
- X mon->mhp -= tmp;
- X! if(mon->mhp < 1)
- X! destroyed = TRUE;
- X if(mon->mtame && (!mon->mflee || mon->mfleetim)) {
- X #ifdef SOUNDS
- X if (rn2(8)) yelp(mon);
- X***************
- X*** 544,552 ****
- X mon->mfleetim += 10*rnd(tmp);
- X }
- X if((mon->data == &mons[PM_BLACK_PUDDING] ||
- X! mon->data == &mons[PM_BROWN_PUDDING]) && uwep &&
- X! uwep == obj && objects[obj->otyp].oc_material == METAL
- X! && mon->mhp > 1 && !thrown && !mon->mcan) {
- X
- X if (clone_mon(mon)) {
- X pline("%s divides as you hit it!", Monnam(mon));
- X--- 523,532 ----
- X mon->mfleetim += 10*rnd(tmp);
- X }
- X if((mon->data == &mons[PM_BLACK_PUDDING] ||
- X! mon->data == &mons[PM_BROWN_PUDDING]) && obj &&
- X! obj == uwep && objects[obj->otyp].oc_material == METAL
- X! && mon->mhp > 1 && !thrown && !mon->mcan
- X! /* && !destroyed -- guaranteed by mhp > 1 */ ) {
- X
- X if (clone_mon(mon)) {
- X pline("%s divides as you hit it!", Monnam(mon));
- X***************
- X*** 554,560 ****
- X }
- X }
- X
- X! if(!hittxt) {
- X if(thrown)
- X /* thrown => obj exists */
- X hit(xname(obj), mon, exclam(tmp) );
- X--- 534,540 ----
- X }
- X }
- X
- X! if(!hittxt && !destroyed) {
- X if(thrown)
- X /* thrown => obj exists */
- X hit(xname(obj), mon, exclam(tmp) );
- X***************
- X*** 562,568 ****
- X else You("hit %s%s", mon_nam(mon), exclam(tmp));
- X }
- X
- X! if(u.umconf && !thrown) {
- X if(!Blind) {
- X Your("%s stop glowing %s.",
- X makeplural(body_part(HAND)),
- X--- 542,553 ----
- X else You("hit %s%s", mon_nam(mon), exclam(tmp));
- X }
- X
- X! if (needpoismsg)
- X! kludge("The poison doesn't seem to affect %s.", mon_nam(mon));
- X!
- X! if (destroyed)
- X! killed(mon); /* takes care of messages */
- X! else if(u.umconf && !thrown) {
- X if(!Blind) {
- X Your("%s stop glowing %s.",
- X makeplural(body_part(HAND)),
- X***************
- X*** 574,580 ****
- X pline("%s appears confused.", Monnam(mon));
- X u.umconf = 0;
- X }
- X! return(TRUE); /* mon still alive */
- X }
- X
- X #ifdef POLYSELF
- X--- 559,581 ----
- X pline("%s appears confused.", Monnam(mon));
- X u.umconf = 0;
- X }
- X!
- X! if(mon->data == &mons[PM_RUST_MONSTER] && obj && obj == uwep &&
- X! objects[obj->otyp].oc_material == METAL &&
- X! obj->olet == WEAPON_SYM && obj->spe > -2) {
- X! if(obj->rustfree) {
- X! pline("The rust on your %s vanishes instantly!",
- X! is_sword(obj) ? "sword" : "weapon");
- X! } else if(obj->blessed && rnl(4))
- X! pline("Somehow your %s is not affected!",
- X! is_sword(obj) ? "sword" : "weapon");
- X! else {
- X! Your("%s!", aobjnam(obj, "corrode"));
- X! obj->spe--;
- X! }
- X! }
- X!
- X! return(destroyed ? FALSE : TRUE);
- X }
- X
- X #ifdef POLYSELF
- X***************
- X*** 911,922 ****
- X kludge("You engulf %s!", mon_nam(mdef));
- X switch(mattk->adtyp) {
- X case AD_DGST:
- X! u.uhunger += 20*mdef->mhpmax;
- X newuhs(FALSE);
- X xkilled(mdef,2);
- X Sprintf(msgbuf, "You totally digest %s.",
- X Blind ? "it" : mon_nam(mdef));
- X! if ((tmp = mdef->mhpmax/5)) {
- X kludge("You digest %s.", mon_nam(mdef));
- X nomul(-tmp);
- X nomovemsg = msgbuf;
- X--- 912,923 ----
- X kludge("You engulf %s!", mon_nam(mdef));
- X switch(mattk->adtyp) {
- X case AD_DGST:
- X! u.uhunger += mdef->data->cnutrit;
- X newuhs(FALSE);
- X xkilled(mdef,2);
- X Sprintf(msgbuf, "You totally digest %s.",
- X Blind ? "it" : mon_nam(mdef));
- X! if (tmp = 3 + (mdef->data->cwt >> 2)) {
- X kludge("You digest %s.", mon_nam(mdef));
- X nomul(-tmp);
- X nomovemsg = msgbuf;
- X***************
- X*** 1170,1176 ****
- X
- X /* Special (passive) attacks on you by monsters done here. */
- X
- X! static int
- X passive(mon, mhit, malive)
- X register struct monst *mon;
- X register boolean mhit;
- X--- 1171,1177 ----
- X
- X /* Special (passive) attacks on you by monsters done here. */
- X
- X! int
- X passive(mon, mhit, malive)
- X register struct monst *mon;
- X register boolean mhit;
- X*** src/Old/unixmain.c Mon Jul 31 14:51:12 1989
- X--- src/unixmain.c Sun Jul 30 18:19:38 1989
- X***************
- X*** 188,198 ****
- X (void) signal(SIGQUIT,SIG_IGN);
- X (void) signal(SIGINT,SIG_IGN);
- X if(!locknum)
- X! Strcpy(lock,plname);
- X getlock(); /* sets lock if locknum != 0 */
- X #ifdef WIZARD
- X } else
- X! Strcpy(lock,plname);
- X #endif /* WIZARD /**/
- X setftty();
- X
- X--- 188,198 ----
- X (void) signal(SIGQUIT,SIG_IGN);
- X (void) signal(SIGINT,SIG_IGN);
- X if(!locknum)
- X! Sprintf(lock, "%d%s", getuid(), plname);
- X getlock(); /* sets lock if locknum != 0 */
- X #ifdef WIZARD
- X } else
- X! Sprintf(lock, "%d%s", getuid(), plname);
- X #endif /* WIZARD /**/
- X setftty();
- X
- X*** src/Old/unixunix.c Mon Jul 31 14:52:10 1989
- X--- src/unixunix.c Sat Jul 29 21:26:29 1989
- X***************
- X*** 15,24 ****
- X--- 15,28 ----
- X
- X /* block some unused #defines to avoid overloading some cpp's */
- X #define MONATTK_H
- X+ #define MONFLAG_H
- X #include "hack.h" /* mainly for index() which depends on BSD */
- X
- X #include <errno.h>
- X #include <sys/stat.h>
- X+ #ifdef NO_FILE_LINKS
- X+ #include <fcntl.h>
- X+ #endif
- X
- X void
- X setrandom()
- X***************
- X*** 215,220 ****
- X--- 219,228 ----
- X {
- X extern int errno;
- X register int i = 0, fd;
- X+ #ifdef NO_FILE_LINKS
- X+ int hlockfd ;
- X+ int sleepct = 20 ;
- X+ #endif
- X
- X #ifdef HARD
- X /* idea from rpick%ucqais@uccba.uc.edu
- X***************
- X*** 230,235 ****
- X--- 238,261 ----
- X (void) fflush(stdout);
- X
- X /* we ignore QUIT and INT at this point */
- X+ #ifdef NO_FILE_LINKS
- X+ while ((hlockfd = open(LLOCK,O_RDONLY|O_CREAT|O_EXCL,0644)) == -1) {
- X+ if (--sleepct) {
- X+ Printf( "Lock file in use. %d retries left.\n",sleepct);
- X+ (void) fflush(stdout);
- X+ # if defined(SYSV) || defined(ULTRIX)
- X+ (void)
- X+ # endif
- X+ sleep(1);
- X+ } else {
- X+ Printf("I give up! Try again later.\n");
- X+ getret();
- X+ error("");
- X+ }
- X+ }
- X+ (void) close(hlockfd);
- X+
- X+ #else /* NO_FILE_LINKS */
- X if (link(HLOCK, LLOCK) == -1) {
- X register int errnosv = errno;
- X
- X***************
- X*** 252,257 ****
- X--- 278,284 ----
- X error("");
- X /*NOTREACHED*/
- X }
- X+ #endif /* NO_FILE_LINKS */
- X
- X regularize(lock);
- X glo(0);
- X*** src/Old/vault.c Mon Jul 31 14:52:40 1989
- X--- src/vault.c Wed Jul 26 12:01:14 1989
- X***************
- X*** 101,107 ****
- X
- X /* make something interesting happen */
- X if(!(guard = makemon(&mons[PM_GUARD], x, y))) return;
- X! guard->isgd = guard->mpeaceful = 1;
- X EGD->gddone = 0;
- X gdlevel = dlevel;
- X if(!cansee(guard->mx, guard->my)) {
- X--- 101,108 ----
- X
- X /* make something interesting happen */
- X if(!(guard = makemon(&mons[PM_GUARD], x, y))) return;
- X! guard->isgd = 1;
- X! guard->mpeaceful = 1;
- X EGD->gddone = 0;
- X gdlevel = dlevel;
- X if(!cansee(guard->mx, guard->my)) {
- X***************
- X*** 177,184 ****
- X /* seems we found a good place to leave him alone */
- X EGD->gddone = 1;
- X if(ACCESSIBLE(typ)) goto newpos;
- X!
- X crm->typ = (typ == SCORR) ? CORR : DOOR;
- X if(crm->typ == DOOR) crm->doormask = D_NODOOR;
- X goto proceed;
- X }
- X--- 178,191 ----
- X /* seems we found a good place to leave him alone */
- X EGD->gddone = 1;
- X if(ACCESSIBLE(typ)) goto newpos;
- X! #ifdef STUPID
- X! if (typ == SCORR)
- X! crm->typ = CORR;
- X! else
- X! crm->typ = DOOR;
- X! #else
- X crm->typ = (typ == SCORR) ? CORR : DOOR;
- X+ #endif
- X if(crm->typ == DOOR) crm->doormask = D_NODOOR;
- X goto proceed;
- X }
- X*** src/Old/zap.c Sat Jul 22 08:19:59 1989
- X--- src/zap.c Mon Jul 31 21:56:58 1989
- X***************
- X*** 245,250
- X #ifdef SPELLS
- X case SPE_POLYMORPH:
- X #endif
- X #ifdef MAIL
- X /* You can't send yourself 100 mail messages and then
- X * polymorph them into useful scrolls
- X
- X--- 245,253 -----
- X #ifdef SPELLS
- X case SPE_POLYMORPH:
- X #endif
- X+ /* preserve symbol and quantity */
- X+ otmp2 = mkobj_at(obj->olet, obj->ox, obj->oy);
- X+ otmp2->quan = obj->quan;
- X #ifdef MAIL
- X /* You can't send yourself 100 mail messages and then
- X * polymorph them into useful scrolls
- X***************
- X*** 249,255
- X /* You can't send yourself 100 mail messages and then
- X * polymorph them into useful scrolls
- X */
- X! if (obj->otyp == SCR_MAIL) obj->spe = 1;
- X #endif
- X /* preserve symbol and quantity */
- X otmp2 = mkobj_at(obj->olet, obj->ox, obj->oy);
- X
- X--- 252,261 -----
- X /* You can't send yourself 100 mail messages and then
- X * polymorph them into useful scrolls
- X */
- X! if (obj->otyp == SCR_MAIL) {
- X! otmp2->otyp = SCR_MAIL;
- X! obj->spe = 1;
- X! }
- X #endif
- X /* keep special fields (including charges on wands) */
- X if (index(charged_objs, otmp2->olet)) otmp2->spe = obj->spe;
- X***************
- X*** 251,260
- X */
- X if (obj->otyp == SCR_MAIL) obj->spe = 1;
- X #endif
- X- /* preserve symbol and quantity */
- X- otmp2 = mkobj_at(obj->olet, obj->ox, obj->oy);
- X- otmp2->quan = obj->quan;
- X-
- X /* keep special fields (including charges on wands) */
- X if (index(charged_objs, otmp2->olet)) otmp2->spe = obj->spe;
- X
- X
- X--- 257,262 -----
- X obj->spe = 1;
- X }
- X #endif
- X /* keep special fields (including charges on wands) */
- X if (index(charged_objs, otmp2->olet)) otmp2->spe = obj->spe;
- X
- X***************
- X*** 1226,1232
- X #ifdef MSDOSCOLOR
- X Tmp_at2(-3, (int)(abstype == 1 ? AT_RED : /* fire */
- X abstype == 3 || abstype == 5 ? AT_WHITE : /* cold/elec */
- X! AT_ZAP);
- X #endif
- X while(range-- > 0) {
- X sx += dx;
- X
- X--- 1228,1234 -----
- X #ifdef MSDOSCOLOR
- X Tmp_at2(-3, (int)(abstype == 1 ? AT_RED : /* fire */
- X abstype == 3 || abstype == 5 ? AT_WHITE : /* cold/elec */
- X! AT_ZAP));
- X #endif
- X while(range-- > 0) {
- X sx += dx;
- X***************
- X*** 1589,1595
- X do {
- X tx = rn1(COLNO-3,2);
- X ty = rn2(ROWNO);
- X! } while(!goodpos(tx,ty));
- X obj->ox = tx;
- X obj->oy = ty;
- X set_omask(otx,oty);
- X
- X--- 1591,1597 -----
- X do {
- X tx = rn1(COLNO-3,2);
- X ty = rn2(ROWNO);
- X! } while(!goodpos(tx,ty,(struct permonst *)0));
- X obj->ox = tx;
- X obj->oy = ty;
- X set_omask(otx,oty);
- X***************
- X*** 1606,1612
- X {
- X /* unpobj(obj); */
- X obj->otyp = ROCK;
- X- obj->blessed = FALSE;
- X obj->quan = 7 + rn2(60);
- X obj->owt = weight(obj);
- X obj->olet = GEM_SYM;
- X
- X--- 1608,1613 -----
- X {
- X /* unpobj(obj); */
- X obj->otyp = ROCK;
- X obj->quan = 7 + rn2(60);
- X obj->owt = weight(obj);
- X obj->olet = GEM_SYM;
- END_OF_FILE
- if test 48599 -ne `wc -c <'src4.diff'`; then
- echo shar: \"'src4.diff'\" unpacked with wrong size!
- fi
- # end of 'src4.diff'
- fi
- echo shar: End of archive 6 \(of 6\).
- cp /dev/null ark6isdone
- MISSING=""
- for I in 1 2 3 4 5 6 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have unpacked all 6 archives.
- echo "now type ./do_patch.sh"
- rm -f ark[1-9]isdone
- else
- echo You still need to unpack the following archives:
- echo " " ${MISSING}
- fi
- ## End of shell archive.
- exit 0
-